home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 28
/
Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso
/
Aminet
/
dev
/
c
/
2b_VRastPort.lha
/
VRastPort_2.0
/
Source
/
math64.a
next >
Wrap
Text File
|
1998-10-25
|
2KB
|
95 lines
;64-bit math functions for vrastport.lib
;$VER math64.a 1.1 (14.10.98)
INCLUDE "utility/utility_lib.i"
XDEF _add64
XDEF _sub64
XDEF _cmp64
XDEF _mul64
XDEF _abs64
XDEF _tst64
XREF _UtilityBase
SECTION code_p
low = 4
high = 0
_add64 LEA 8(a0),a0
LEA 8(a1),a1
MOVE.L -(a0),d0
ADD.L d0,-(a1)
ADDX.L -(a0),-(a1)
BVS.S overflow_a
CLR.L d0
BRA.S no_ovr_a
overflow_a MOVEQ #-1,d0
no_ovr_a RTS
;-----------------------------------------------------------------------------
_sub64 LEA 8(a0),a0
LEA 8(a1),a1
MOVE.L -(a0),d0
SUB.L d0,-(a1)
SUBX.L -(a0),-(a1)
BVS.S overflow_s
CLR.L d0
BRA.S no_ovr_s
overflow_s MOVEQ #-1,d0
no_ovr_s RTS
;-----------------------------------------------------------------------------
_cmp64 MOVE.L high(a0),d0
CMP.L high(a1),d0
BEQ.S compare_low
BGT.S greater
lower MOVEQ #-1,d0
RTS
greater MOVEQ #1,d0
RTS
compare_low MOVE.L low(a0),d0
CMP.L low(a1),d0
BGT.S greater
BLT.S lower
CLR.L d0
RTS
;-----------------------------------------------------------------------------
_mul64 MOVEA.L _UtilityBase,a1
JSR _LVOSMult64(a1)
MOVE.L d1,(a0)+
MOVE.L d0,(a0)
RTS
;-----------------------------------------------------------------------------
_abs64 TST.L (a0)
BPL.S no_neg
NEG.L 4(a0)
NEGX.L (a0)
no_neg RTS
;-----------------------------------------------------------------------------
_tst64 TST.L (a0)
BEQ.S test_low
BMI.S negative
positive MOVEQ #1,d0
RTS
negative MOVEQ #-1,d0
RTS
test_low TST.L 4(a0)
BMI.S negative
BNE.S positive
CLR.L d0
RTS
;-----------------------------------------------------------------------------
END